package meiyunting.shiwuzhaoling.client;

import feign.Request;
import feign.Retryer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.concurrent.TimeUnit;

/**
 * 失物招领服务Feign客户端配置
 * 配置超时时间、重试策略等
 */
@Configuration
public class LostFoundServiceFeignConfig {
    
    /**
     * 配置请求超时时间
     * 连接超时和读取超时均设置为3秒
     */
    @Bean
    public Request.Options options() {
        return new Request.Options(
                3, TimeUnit.SECONDS, // 连接超时
                3, TimeUnit.SECONDS, // 读取超时
                true); // 跟随重定向
    }
    
    /**
     * 配置重试策略
     * 最多重试2次，初始间隔100ms，最大间隔1s
     */
    @Bean
    public Retryer retryer() {
        return new Retryer.Default(100, 1000, 2);
    }
    
    /**
     * 配置错误解码器
     * 用于将HTTP错误转换为自定义异常
     */
    @Bean
    public feign.codec.ErrorDecoder errorDecoder() {
        return new feign.codec.ErrorDecoder.Default();
    }
} 